package com.zsk.shop.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("商城订单实体类返回")
public class ShopOrder implements Serializable {

    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(name = "id", value = "主键编号", dataType = "Long")
    private Long id;

    @ApiModelProperty(name = "orderNo", value = "订单编号", dataType = "String")
    private String orderNo;

    @ApiModelProperty(name = "transactionId", value = "支付单号", dataType = "String")
    private String transactionId;

    @ApiModelProperty(name = "goodsNo", value = "关联商品", dataType = "String")
    private String goodsNo;

    @ApiModelProperty(name = "goodsNumber", value = "购买数量", dataType = "Integer")
    private Integer goodsNumber;

    @TableField(exist = false)
    @ApiModelProperty(name = "goodsName", value = "商品名称", dataType = "String")
    private String goodsName;

    @ApiModelProperty(name = "goodsOrderType", value = "1 普通，2 0元购，3 会员商城, 4 特殊", dataType = "Integer")
    private Integer goodsOrderType;

    @ApiModelProperty(name = "snapshot", value = "快照", dataType = "String")
    private String snapshot;

    @ApiModelProperty(name = "userNo", value = "用户主键", dataType = "String")
    private String userNo;

    @ApiModelProperty(name = "address", value = "收货地址", dataType = "String")
    private String address;

    @ApiModelProperty(name = "name", value = "收货人", dataType = "String")
    private String name;

    @ApiModelProperty(name = "phone", value = "收货人手机号", dataType = "String")
    private String phone;

    @ApiModelProperty(name = "amount", value = "订单金额", dataType = "BigDecimal")
    private BigDecimal amount;

    @ApiModelProperty(name = "payAmount", value = "实际支付金额", dataType = "BigDecimal")
    private BigDecimal payAmount;

    @ApiModelProperty(name = "postage", value = "邮费", dataType = "BigDecimal")
    private BigDecimal postage;

    @ApiModelProperty(name = "returnPoints", value = "赠送积分", dataType = "Integer")
    private Integer returnPoints;

    @ApiModelProperty(name = "deductPoints", value = "抵扣积分", dataType = "Integer")
    private BigDecimal deductPoints;

    @ApiModelProperty(name = "payType", value = "1支付宝 2 微信 3小程序支付", dataType = "Integer")
    private Integer payType;

    @ApiModelProperty(name = "payTime", value = "支付时间", dataType = "Date")
    private Date payTime;

    @ApiModelProperty(name = "deliveryTime", value = "发货时间", dataType = "Date")
    private Date deliveryTime;

    @ApiModelProperty(name = "orderStatus", value = "订单状态", dataType = "String")
    private String orderStatus;

    @ApiModelProperty(name = "orderStatus", value = "订单类型", dataType = "Integer")
    private Integer orderType;

    @ApiModelProperty(name = "refundStatus", value = "退款状态:0未退款 1退款中 2退款被驳回 3退款成功", dataType = "String")
    private String refundStatus;

    @ApiModelProperty(name = "refundTimes", value = "退款次数", dataType = "Integer")
    private Integer refundTimes;

    @ApiModelProperty(name = "refundTime", value = "退款时间", dataType = "Date")
    private Date refundTime;

    @ApiModelProperty(name = "doneTime", value = "订单扭转完成时间", dataType = "Date")
    private Date doneTime;

    @ApiModelProperty(name = "remarks", value = "备注", dataType = "String")
    private String remarks;

    @ApiModelProperty(name = "createTime", value = "创建时间", dataType = "Date")
    private Date createTime;

    @ApiModelProperty(name = "parentUserNo", value = "绑定业绩到用户", dataType = "Boolean")
    private String parentUserNo;

    @ApiModelProperty(name = "orderPointsNo", value = "使用抵扣红包", dataType = "String")
    private String orderPointsNo;

    @ApiModelProperty(name = "isDeleted", value = "是否删除", dataType = "Boolean")
    private Boolean isDeleted;

    private static final long serialVersionUID = 1L;
}